﻿// 
// 
// Solution: DeliveryPlus
// Project: DeliveryPlus.Web
// File: SecurityFilterAttribute.cs
// 
// Created by: ykors_000 at 19.02.2014 14:11
// 
// Property of SoftGears
// 
// ========

using System.Web;
using System.Web.Mvc;

namespace DeliveryPlus.Web.Classes.Utils
{
    public class SecurityFilterAttribute: ActionFilterAttribute
    {
        /// <summary>
        /// Called by the ASP.NET MVC framework before the action method executes.
        /// </summary>
        /// <param name="filterContext">The filter context.</param>
        public override void OnActionExecuting(ActionExecutingContext filterContext)
        {
            // Идет ли доступ в панель управления
            if (filterContext.HttpContext.Request.Url.AbsolutePath.ToLower().Contains("/controlpanel"))
            {
                // Проверяем идем ли мы на страницу авторизации
                if (filterContext.HttpContext.Request.Url.AbsolutePath.EndsWith("Login"))
                {
                    base.OnActionExecuting(filterContext);
                    return;
                }
                // Проверяем наличие авторизационной куки
                var securityCookie = HttpContext.Current.Request.Cookies["admin"];
                if (securityCookie == null ||
                    securityCookie.Value !=
                    PasswordUtils.GenerateMD5PasswordHash(
                        System.Configuration.ConfigurationManager.AppSettings["SecurityPassword"]))
                {
                    filterContext.Result = new RedirectResult("/ControlPanel/Root/Login");
                    return;
                }
            }
            base.OnActionExecuting(filterContext);
        }
    }
}